202105 连翘电子鼻

本数据用于中药材产地鉴别 herbal material habitat identification，样本量较少

检测对象：
中药材-连翘（forsythia）

类标签： 
["山西","河南","湖北","陕西"]

数据说明: 

本数据已经进行了预处理（做了时间轴对齐处理）。
由于原始的电子鼻的数据是多个通道的传感器阵列所产生的一个时间响应的曲线，每一个检测数据所产生的数据在响应时间(送样时刻)上面都不是对齐的，所以为了进行横向的比较，数据前段的波形为清洗阶段，应无视。中后段数据需要进行对齐alignment。我们试验了多种对齐的算法，一种是基于卡方相关性的，一种是基于phase correlation，一种是特征峰对齐。对比选择最优的对齐算法。对齐后截取相同长度的序列。 

X的维度为(23, 14, 868)。23个样本，14个sensor通道（channel），时间轴上868个采样点。
y的维度(23,)


适用于该数据集的特征提取方法：

与拉曼光谱和飞行时间质谱不同，电子鼻数据反映的是随时间变化的一个响应趋势，因此，我们更加关注的是曲线随时间变化的一些动态特征。为此，我们设计了多种特征提取的方法，并进行了对比。 第一种方法，我们直接将各个传感器通道的数据拼接成一个长的向量作为特征。这种方法相当于是没有做任何的特征提取，而是直接使用原始的特征。 第二种方法是提取原始的波形数据的一些数学特征或统计量，包括AUC曲线下面积，曲线的最高峰的高度，一阶导数的AUC，最大值和最小值，二阶导数的AUC，最大值和最小值。 第三种方法是对原始各个通道的波形进行频域转化，即进行fft变换。然后选取频域中的前5%的低频变量作为提取的特征 第四种方法与第三种方法类似，通过离散余弦变换dct，选取频域中的前10%的低频成分，作为提取的特征 第五种方法是采用卷积核，如拉普拉斯核(在图像处理中，二维laplace operator常用于edge detection)，与原始信号进行卷积运算，得到卷积核提取后的新的特征
关键词：FFT, DCT, 一维卷积算子（如Laplace算子）


对齐预处理代码（实际效果不佳，有待提升）：

    # %pdb on
    import os
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    from spa.io import pre
    from spa import io

    path = "7746.txt"
    data = pd.read_csv(path, delimiter = '\t') # ,header=None

    cols = data.shape[1]
    # convert from pandas dataframe to numpy matrices
    X = np.array(data.iloc[:,1:cols].values)
    y = np.array(data.iloc[:,0].values.ravel()) # first col is y label

    X_names = list(data.columns.values[1:]) # X_names = np.array(list(data)[1:])

    labels = list(set(y))

    L = len(X[0,0].split(","))
    START = round(L/2)
    NL = round(L/4)

    XA, SHIFTS = pre.align_nch_dataset(X, start = START, length = NL,  method = 'peak', display = True) # three method flavors, 'chisq', 'phase' and 'peak'. ‘peak' is the best

    # remove invalid data
    XA = np.vstack((XA[:-3], XA[-2:]))
    y = np.hstack((y[:-3], y[-2:]))

    io.save_dataset('7746.pkl', X, y, X_names)


参考文献：
    10.3390/s16030304
    10.3390/s151127804
    10.1016/S0925-4005(02)00247-2